﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemCenterSoa.DtoModel.Attendance_Management;
using SystemCenterSoa.PoModel.Attendance_Management;

namespace SystemCenterSoa.IRepository.Attendance_Management
{
    public interface AttendanceManagementIRepository
    {
        //考勤申请-------------------------------------------------------------------------------

        int AskLeavePoAdd(ApplyLeavePo oneForm);//请假申请添加

        int BusinessTravelRequestPoAdd(BusinessTravelRequestPo twoForm);//出差申请添加

        int FieldApplicationPoAdd(FieldApplicationPo threeForm);//外勤申请添加

        int NotClockPoAdd(NotClockPo fourForm);//未打卡申请添加
        int CompanyActivitiesPoAdd(CompanyActivitiesPo fiveForm);//公司活动申请添加

        int DepartmentActivityPoAdd(DepartmentActivityPo sixForm);//部门活动申请添加

        int WorkOvertimeLeaveAdd(WorkOvertimeLeavePo sevenForm);//加班离岗申请添加

        //日历审批中反填
        public object GetAllApplicationType();

        //请假byid
        ApplyLeavePo Edit(int id);

        //出差byid
        BusinessTravelRequestPo TwoEdit(int id);

        //外勤
        FieldApplicationPo ThreeEdit(int id);

        //未打卡byid
        NotClockPo FourEdit(int id);


        //公司活动byid
        CompanyActivitiesPo FiveEdit(int id);

        //部门活动byid
        DepartmentActivityPo SixEdit(int id);

        //加班离岗byid
        WorkOvertimeLeavePo SevenEdit(int id);

        //获取所有请假数据

        object GetAllAskLeave(string depname, int year, int month, int pageIndex, int pageSize);

        //出差
        object GetAllBusinessTravelRequestPo(string depname, int year, int month, int pageIndex, int pageSize);

        //外勤
        object GetAllFieldApplicationPo(string depname, int year, int month, int pageIndex, int pageSize);

        object GetAllNotClockPo(string depname, int year, int month, int pageIndex, int pageSize);

        object GetAllCompanyActivitiesPo(string depname, int year, int month, int pageIndex, int pageSize);


        object GetAllDepartmentActivityPo(string depname, int year, int month, int pageIndex, int pageSize);

        object GetAllWorkOvertimeLeavePo(string depname, int year, int month, int pageIndex, int pageSize);
        //请假修改状态
        int AskLeaveAudit(int status, int id, string modifi_name);

        int BusinessTravelRequestPoAudit(int status, int id, string modifi_name);

        int FieldApplicationPoAudit(int status, int id, string modifi_name);

        int NotClockPoAudit(int status, int id, string modifi_name);

        int CompanyActivitiesPoAudit(int status, int id, string modifi_name);

        int DepartmentActivityPoAudit(int status, int id, string modifi_name);

        int WorkOvertimeLeavePoAudit(int status, int id, string modifi_name);

        //批量删除
        int AskLeaveDelete(List<int> ids);

        int BusinessTravelRequestPoDelete(List<int> ids);

        int FieldApplicationPoDelete(List<int> ids);

        int NotClockPoDelete(List<int> ids);

        int CompanyActivitiesPoDelete(List<int> ids);

        int DepartmentActivityPoDelete(List<int> ids);

        int WorkOvertimeLeavePoDelete(List<int> ids);

        //修改考勤申请

        int AskLeavePoUpdate(ApplyLeavePo oneForm);//请假申请

        int BusinessTravelRequestPoUpdate(BusinessTravelRequestPo twoForm);//出差申请

        int FieldApplicationPoUpdate(FieldApplicationPo threeForm);//外勤申请

        int NotClockPoUpdate(NotClockPo fourForm);//未打卡申请
        int CompanyActivitiesPoUpdate(CompanyActivitiesPo fiveForm);//公司活动申请

        int DepartmentActivityPUpdate(DepartmentActivityPo sixForm);//部门活动申请

        int WorkOvertimeLeaveUpdate(WorkOvertimeLeavePo sevenForm);//加班离岗申请

        //年假统计
        List<AnnualLeaveStatisticsDto> GetAllAnnualLeaveStatisticsDto(string depname, string name, int year);

        //部门加班费管理
        List<DepartmentOvertimeManagementPo> GetDepartmentOvertimeManagementPo(string depname, int year, int month);

        //员工出勤显示
        public List<EmployeeAttendanceSettingsPo> GetAllEmployeeAttendanceSettingsPo(string depname, int year, string username);

        public int UpdateEmployeeAttendanceSettingsPo(List<EmployeeAttendanceSettingsPo> tabledata);

        //部门经理设置显示
        List<DepartmentListPo> GetDepartmentListPo();

        //节假日设置

        object GetHolidaySettingsPo(int year);
        //节假日
        int AddHolidaySeason(DateTime date);
        int DeleteHolidaySettingsPo(int id);

        //特殊工作日
        int AddSpecialWorkingDay(DateTime date);
        //年假设置
        List<AnnualLeaveSetPo> GetAnnualLeaveSetPo(string depname, int year);

        int UpdateAnnualLeaveSetPo(List<AnnualLeaveSetPo> tabledata);

        //上传考勤
        List<UploadAttendancePo> GetUploadAttendancePo(int year, int month);

        int AddUploadAttendancePo(string name);

        List<ComprehensiveStatisticsContractsProjectsPo> GetComprehensiveStatisticsContractsProjectsPo(string depname,int year);
    }
}
